// 通过localstorage来实现长时间保存用户信息
// 注意 localStorage不一定能够兼容所有的浏览器
// 保存user

// 定义限制user的类型的接口
// 这个接口必须和memoryUtils中user的接口类型相同,这样才能操你个localStorage中取信息给到memory的user
interface userinfo {
  _id: String;
  username: String;
}

const saveUser = (user: userinfo) => {
  localStorage.setItem("user_key", JSON.stringify(user));
};

// 读取user 返回的是对象
const getUser = (): userinfo => {
  // 如果localstorage中没有信息时候
  if (localStorage.getItem("user_key") === null) {
    return { _id: "", username: "" };
  }
  // return JSON.parse(localStorage.getItem("user_key"));
  // 当能get到localStorage的信息时候就返回对应信息对象
  let val = localStorage.getItem("user_key");
  if (val && val !== "null" && val !== "undefined") {
    return JSON.parse(val);
  }
  // 当能get不到localStorage的信息时候就返回空内容
  return { _id: "", username: "" };
};

// 删除user信息 不需要参数
const deleteUser = () => localStorage.removeItem("user_key");

const storage = {
  saveUser,
  getUser,
  deleteUser,
};

export default storage;
